describe('iD.modeAddNote', function() {
    var context;

    before(function() {
        iD.services.osm = iD.serviceOsm;
    });

    after(function() {
        delete iD.services.osm;
    });

    beforeEach(function() {
        var container = d3.select(document.createElement('div'));

        context = iD.coreContext()
            .container(container);

        context.loadTiles = function () {};

        container.call(context.map())
            .append('div')
            .attr('class', 'inspector-wrap');

        context.map().centerZoom([-77.02271, 38.90085], 20);
        context.enter(iD.modeAddNote(context));
    });

    describe('clicking the map', function () {
        it('adds a note', function() {
            var note =  iD.osmNote({
                id: '-1',
                comments: [],
                loc: [-77.02271, 38.90085],
                status: 'open'
            });
            happen.mousedown(context.surface().node(), {});
            happen.mouseup(window, {});
            expect(iD.services.osm.caches().note.note[-1]).to.eql(note);
            context.mode().exit();
            d3.select('window').on('click.draw-block', null);
        });

        // this won't work because draw behavior can only snap to entities, not notes
        // it('selects an existing note rather than adding a new one', function() {
        //     happen.mousedown(context.surface().node(), {});
        //     happen.mouseup(window, {});
        //     expect(context.selectedNoteID()).to.eql(-1);
        //     expect(context.mode().id).to.equal('select-note');
        //     context.mode().exit();
        //     d3.select('window').on('click.draw-block', null);
        // });
    });

    // describe('pressing ⎋', function() {
    //     it('exits to browse mode', function(done) {
    //         happen.keydown(document, {keyCode: 27});
    //         window.setTimeout(function() {
    //             expect(context.mode().id).to.equal('browse');
    //             done();
    //         }, 200);
    //     });
    // });
});
